home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / elevator1 / code.lua next >
Text File  |  2005-07-16  |  8KB  |  246 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     sound_playMusic("music/rybky01.ogg")
  8.     local pokus = getRestartCount()
  9.     local roompole = createArray(1)
  10.  
  11.  
  12.     -- -------------------------------------------------------------
  13.     local function prog_init_room()
  14.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  15.  
  16.         room.uvod = 0
  17.         room.lebzna = 0
  18.         room.lastura = 0
  19.         room.jizdam = random(15) + 3
  20.         room.jizdav = random(50) + 10
  21.         if pokus > 1 then
  22.             if random(100) < 30 then
  23.                 room.uvod = 1
  24.             end
  25.             if random(100) < 50 then
  26.                 room.lastura = 1
  27.             end
  28.             if random(100) < 60 then
  29.                 room.lebzna = 1
  30.             end
  31.             if random(100) < 20 then
  32.                 room.jizdam = -1
  33.             end
  34.             if random(100) < 30 then
  35.                 room.jizdav = -1
  36.             end
  37.         end
  38.         room.huhuh = 0
  39.  
  40.         return function()
  41.             if isReady(small) and isReady(big) and no_dialog() then
  42.                 if room.uvod == 0 then
  43.                     addv(random(20) + 50, "zd1-v-civil")
  44.                     switch(roompole[0]){
  45.                         [0] = function()
  46.                             addm(random(10), "zd1-m-dolu")
  47.                         end,
  48.                         [1] = function()
  49.                             addm(random(10), "zd1-m-tlac")
  50.                             roompole[0] = roompole[0] + 1
  51.                         end,
  52.                         [2] = function()
  53.                             if random(2) == 0 then
  54.                                 addm(random(10), "zd1-m-tlac")
  55.                             else
  56.                                 addm(random(10), "zd1-m-dolu")
  57.                             end
  58.                         end,
  59.                     }
  60.                     room.uvod = 1
  61.                 end
  62.                 if room.lastura == 0 and look_at(small, shelka) and math.abs(ydist(small, shelka)) < 3 and random(100) < 1 then
  63.                     if random(2) == 0 then
  64.                         addm(0, "zd1-m-last")
  65.                     else
  66.                         addm(0, "zd1-m-poved")
  67.                     end
  68.                     if random(2) == 0 then
  69.                         addv(random(10), "zd1-v-talis")
  70.                     else
  71.                         addv(random(3), "zd1-v-styd")
  72.                     end
  73.                     room.lastura = 1
  74.                 elseif room.lebzna == 0 and look_at(big, llebka) and math.abs(ydist(big, llebka)) < 3 and random(100) < 1 then
  75.                     addv(20, "zd1-v-lebka")
  76.                     addm(random(8), "zd1-m-stejne")
  77.                     room.lebzna = 1
  78.                 elseif small.jede == room.jizdam then
  79.                     addm(0, "zd1-m-cesta")
  80.                     room.jizdam = -1
  81.                 elseif big.jede == room.jizdav then
  82.                     addv(0, "zd1-v-krecek")
  83.                     addm(3, "zd1-m-slap")
  84.                     room.jizdav = -1
  85.                 elseif random(1000) < 8 then
  86.                     pom1 = room.huhuh
  87.                     if room.huhuh == 0 then
  88.                         room.huhuh = random(3) + 1
  89.                     else
  90.                         room.huhuh = random(4) + 1
  91.                     end
  92.                     if pom1 == room.huhuh then
  93.                         room.huhuh = 5
  94.                     end
  95.                     planDialogSet(5, "zd1-x-huhu"..room.huhuh, 101, dedek, "mluvi")
  96.                 end
  97.             end
  98.         end
  99.     end
  100.  
  101.     -- -------------------------------------------------------------
  102.     local function prog_init_vytah()
  103.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  104.  
  105.         --NOTE: double rope
  106.         game_addDecor("rope", vytah.index, stroj.index, 43, 0, 58, 27)
  107.         game_addDecor("rope", vytah.index, stroj.index, 43 + 3, 0, 58 + 3, 27)
  108.  
  109.         return function()
  110.             if vytah.dir == dir_up then
  111.                 if roompole[0] == 0 then
  112.                     roompole[0] = 1
  113.                 end
  114.             end
  115.         end
  116.     end
  117.  
  118.     -- -------------------------------------------------------------
  119.     local function prog_init_stroj()
  120.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  121.  
  122.         return function()
  123.             if stroj.X == vytah.X - 1 then
  124.                 if stroj.dir == dir_no and vytah.dir == dir_down then
  125.                     pom1 = 2
  126.                 elseif stroj.dir == dir_up and vytah.dir == dir_no then
  127.                     pom1 = 1
  128.                 elseif stroj.dir == dir_no and vytah.dir == dir_up then
  129.                     pom1 = -1
  130.                 elseif stroj.dir == dir_down and vytah.dir == dir_no then
  131.                     pom1 = -2
  132.                 else
  133.                     pom1 = 0
  134.                 end
  135.                 stroj.afaze = stroj.afaze + pom1
  136.                 if stroj.afaze > 5 then
  137.                     stroj.afaze = stroj.afaze - 6
  138.                 elseif stroj.afaze < 0 then
  139.                     stroj.afaze = stroj.afaze + 6
  140.                 end
  141.             end
  142.  
  143.             stroj:updateAnim()
  144.         end
  145.     end
  146.  
  147.     -- -------------------------------------------------------------
  148.     local function prog_init_hlavicka()
  149.         return function()
  150.             if hlavicka.afaze == 0 and random(100) < 2 or hlavicka.afaze ~= 0 and random(100) < 5 then
  151.                 hlavicka.afaze = random(3)
  152.             end
  153.  
  154.             hlavicka:updateAnim()
  155.         end
  156.     end
  157.  
  158.     -- -------------------------------------------------------------
  159.     local function prog_init_dedek()
  160.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  161.  
  162.         dedek.mluvi = 0
  163.  
  164.         return function()
  165.             if dedek.mluvi ~= 0 then
  166.                 dedek.afaze = random(2) + 1
  167.             else
  168.                 dedek.afaze = 0
  169.             end
  170.  
  171.             dedek:updateAnim()
  172.         end
  173.     end
  174.  
  175.     -- -------------------------------------------------------------
  176.     local function prog_init_small()
  177.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  178.  
  179.         small.jede = 0
  180.  
  181.         return function()
  182.             if vytah.dir == dir_up and small.X >= vytah.X and small.X < vytah.X + 4 and small.Y > vytah.Y and small.Y < vytah.Y + 6 then
  183.                 small.jede = small.jede + 1
  184.             end
  185.         end
  186.     end
  187.  
  188.     -- -------------------------------------------------------------
  189.     local function prog_init_big()
  190.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  191.  
  192.         big.jede = 0
  193.  
  194.         return function()
  195.             if vytah.dir == dir_up and big.X >= vytah.X and big.X < vytah.X + 3 and big.Y > vytah.Y and big.Y < vytah.Y + 5 then
  196.                 big.jede = big.jede + 1
  197.             end
  198.         end
  199.     end
  200.  
  201.     -- --------------------
  202.     local update_table = {}
  203.     local subinit
  204.     subinit = prog_init_room()
  205.     if subinit then
  206.         table.insert(update_table, subinit)
  207.     end
  208.     subinit = prog_init_vytah()
  209.     if subinit then
  210.         table.insert(update_table, subinit)
  211.     end
  212.     subinit = prog_init_stroj()
  213.     if subinit then
  214.         table.insert(update_table, subinit)
  215.     end
  216.     subinit = prog_init_hlavicka()
  217.     if subinit then
  218.         table.insert(update_table, subinit)
  219.     end
  220.     subinit = prog_init_dedek()
  221.     if subinit then
  222.         table.insert(update_table, subinit)
  223.     end
  224.     subinit = prog_init_small()
  225.     if subinit then
  226.         table.insert(update_table, subinit)
  227.     end
  228.     subinit = prog_init_big()
  229.     if subinit then
  230.         table.insert(update_table, subinit)
  231.     end
  232.     return update_table
  233. end
  234. local update_table = prog_init()
  235.  
  236.  
  237. -- -----------------------------------------------------------------
  238. -- Update
  239. -- -----------------------------------------------------------------
  240. function prog_update()
  241.     for key, subupdate in pairs(update_table) do
  242.         subupdate()
  243.     end
  244. end
  245.  
  246.